/**
 * 文件名：@SoaClientConfig.java <br/>
 * 包名：cn.efunbox.afw.soa.consumer.example <br/>
 * 项目名：afw-soa-consumer-example <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.soa.client.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import cn.efunbox.afw.soa.client.netflix.feign.support.FastJsonRequestBodyEncoder;
import cn.efunbox.afw.soa.client.netflix.feign.support.FastJsonResponseBodyDecoder;
import cn.efunbox.afw.soa.client.netflix.feign.support.SoaMethodFeatureContract;

/**
 * 类名：SoaClientConfig  <br />
 *
 * 功能：
 *
 * @author xtwin <br />
 * 创建时间：2016年7月22日 下午4:29:09  <br />
 * @version 2016年7月22日
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(SoaServiceConfigGroup.class)
public @interface SoaClientConfig {

	/**
	 * 功能：服务名称 <br/>
	 *
	 * @author xtwin <br/>
	 * @version 2016年7月22日 下午4:31:09 <br/>
	 */
	String service();
	
	/**
	 * 功能：url，该配置会导致负载均衡失效 <br/>
	 *
	 * @author xtwin <br/>
	 * @version 2016年7月25日 上午11:20:59 <br/>
	 */
	String url() default "";
	
	/**
	 * 功能：路径 <br/>
	 *
	 * @author xtwin <br/>
	 * @version 2016年7月25日 下午12:15:25 <br/>
	 */
	String path() default "";
	
	/**
	 * 功能： <br/>
	 *
	 * @author xtwin <br/>
	 * @version 2016年7月25日 下午12:16:39 <br/>
	 */
	boolean decode404() default false;
	
	/**
	 * 功能：需要进行扫描的包 <br/>
	 *
	 * @author xtwin <br/>
	 * @version 2016年7月22日 下午4:31:56 <br/>
	 */
	String[] basePackages() default {};
	
	/**
	 * 功能： <br/>
	 *
	 * @author xtwin <br/>
	 * @version 2016年7月24日 下午4:32:53 <br/>
	 */
	Class<?>[] configurations() default {
		// 编码器
		FastJsonRequestBodyEncoder.class,
		// 解码器
		FastJsonResponseBodyDecoder.class,
		// 连接器
		SoaMethodFeatureContract.class
	};
}
